#ifndef COROUTINEHOOK_H
#define COROUTINEHOOK_H

#define _GNU_SOURCE //必须放在开头
#include <dlfcn.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <sys/epoll.h>
#include <unistd.h>
#include <fcntl.h>

#include "commonhead.h"
#include "coroutineC.h"

// 原始accept函数指针
typedef int (*accept_t)(int sockfd, struct sockaddr *addr, socklen_t *addrlen);
// 原始recv函数指针
typedef ssize_t (*recv_t)(int sockfd, void *buf, size_t len, int flags);

// Hook后的read函数
int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);
// Hook后的recv函数
ssize_t recv(int sockfd, void *buf, size_t len, int flags);

// 初始化Hook
void init_hooks();

#endif